/*
 *
 * Copyright (c) 2007, Sun Microsystems, Inc.
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *  * Neither the name of Sun Microsystems nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.*;

/**
 * The MIDlet demonstrates the different types of list supported by MIDP-2.0:
 *      EXCLUSIVE - a choice having exactly one element selected at time.
 *      IMPLICIT  - a choice in which the currently focused element is
 *                  selected when a Command is initiated.
 *      MULTIPLE  - a choice that can have arbitrary number of elements
 *                  selected at a time.
 *
 * @version 2.0
 */
public class ListDemo extends MIDlet implements CommandListener {

    private static final Command CMD_EXIT = new Command("Exit", Command.EXIT, 1);
    private static final Command CMD_BACK = new Command("Back", Command.BACK, 1);
    private Display display;
    private List mainList;
    private List menuItem;
    private List exclusiveList;
    private List implicitList;
    private List multipleList;
    private boolean firstTime;
    private Form mainForm;
    private List importancelevel;


    public ListDemo() {
        display = Display.getDisplay(this);


        Image[] imageArray = null;
        String[] stringArray = {"Them", "Chinh sua", "Xoa", "Xoa tat ca", "Cau hinh", "Huond dan"};
        menuItem = new List("MENU", Choice.IMPLICIT, stringArray, imageArray);

        Font readElementFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_LARGE);

        for (int i = 0; i < menuItem.size(); i++) {
            menuItem.setFont(i, readElementFont);
        }

        menuItem.addCommand(CMD_BACK);
        menuItem.setCommandListener(this);

        mainForm = new Form("Them");

       // mainForm.append("This demo contains text fields each one "
        //        + "with a different constraint");


        mainForm.append(new TextField("Cong Viec", "", 15, TextField.ANY));
        mainForm.append(new DateField("Date & Time", DateField.DATE_TIME));

        mainForm.append("Importance");
        //Item item = new StringItem("Button ", "Button", Item.BUTTON);
        //mainForm.append(item);
        //item.setDefaultCommand();
        //item.setItemCommandListener(this);

        importancelevel = new List("Importance", List.EXCLUSIVE);
        importancelevel.append("rat quan trong", null);
        importancelevel.append("Quan Trong", null);
        importancelevel.append("Binh thuong", null);
        importancelevel.append("Khong can thiet", null);

        //mainForm.append(importancelevel);
        //mainForm.append(new ("Date & Time", DateField.DATE_TIME));

        //mainForm.append(new )
        //mainForm.append(new TextField("Cong Viec", "", 15, TextField.ANY));

        //mainForm.append(new TextField("Cong Viec", "", 15, TextField.ANY));

        //mainForm.append(new TextField("E-Mail", "", 15, TextField.EMAILADDR));
        //mainForm.append(new TextField("Number", "", 15, TextField.NUMERIC));
        //mainForm.append(new TextField("Decimal", "", 15, TextField.DECIMAL));
        //mainForm.append(new TextField("Phone", "", 15, TextField.PHONENUMBER));
        //mainForm.append(new TextField("Password", "", 15, TextField.PASSWORD));
        //mainForm.append(new TextField("URL", "", 15, TextField.URL));

        mainForm.addCommand(CMD_BACK);
        mainForm.setCommandListener(this);

        firstTime = true;
    }

    protected void startApp() {
        if (firstTime) {
            // these are the images and strings for the choices.
            Image[] imageArray = null;

            try {
                // load the duke image to place in the image array
                Image icon = Image.createImage("Icon.png");

                // these are the images and strings for the choices.
                imageArray = new Image[]{icon, icon, icon, icon, icon, icon, icon, icon};
            } catch (java.io.IOException err) {
                // ignore the image loading failure the application can recover.
            }

            String stringTime = "     4-10-2011 8:00";

            String[] stringArray = {
                "CongViecA" + stringTime, "CongViecB" + stringTime,
                "CongViecC" + stringTime, "CongViecD" + stringTime,
                "CongViecE" + stringTime, "CongViecF" + stringTime,
                "CongViecG" + stringTime, "CongViecH" + stringTime};

            mainList = new List("Choose type", Choice.IMPLICIT, stringArray, imageArray);

            mainList.addCommand(CMD_EXIT);
            mainList.setCommandListener(this);
            display.setCurrent(mainList);
            firstTime = false;
        }
    }

    protected void destroyApp(boolean unconditional) {
    }

    protected void pauseApp() {
    }

    public void commandAction(Command c, Displayable d) {
        if (d.equals(mainList)) {
            // in the main list
            if (c == List.SELECT_COMMAND) {
                if (d.equals(mainList)) {
                    display.setCurrent(menuItem);
                }
            }
        } else{
            if (c == List.SELECT_COMMAND) {
                if (d.equals(menuItem)) {
                    switch (((List) d).getSelectedIndex()) {
                        case 0:
                            display.setCurrent(mainForm);
                            break;
                        case 1:
                            //display.setCurrent(implicitList);
                            break;
                        case 2:
                            // display.setCurrent(multipleList);
                            break;
                    }
                }
            }
            // in one of the sub-lists
            if (c == CMD_BACK) {
                display.setCurrent(mainList);
            }
        }

        if (c == CMD_EXIT) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
}
